package CONTABILIDAD_MODELO;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class CON_CHEQUE {

    private Double ID;
    private Double NRO_CHEQUE;
    private Double ID_REGIONAL;
    private Date FECHA;
    private String NOMBRE;
    private Double MONTO;
    private Double ESTADO;
    private String MONTO_LITERAL;
    private Conexion con = null;

    public CON_CHEQUE() {
    }

    public CON_CHEQUE(Double ID, Double NRO_CHEQUE, Double ID_REGIONAL, Date FECHA, String NOMBRE, Double MONTO, String MONTO_LITERAL) {
        this.ID = ID;
        this.NRO_CHEQUE = NRO_CHEQUE;
        this.ID_REGIONAL = ID_REGIONAL;
        this.FECHA = FECHA;
        this.NOMBRE = NOMBRE;
        this.MONTO = MONTO;
        this.MONTO_LITERAL = MONTO_LITERAL;
    }

    public boolean Insertar() {
        try {
            String consulta = "insert into BROKER.CON_CHEQUE(ID, NRO_CHEQUE,  ID_REGIONAL, FECHA, NOMBRE, MONTO, MONTO_LITERAL,ESTADO) VALUES (" + ID + "," + NRO_CHEQUE + "," + ID_REGIONAL + ",to_date('"+getFECHA()+"', 'DD/MM/YYYY HH:MI:SS'),'" + NOMBRE + "'," + MONTO + ",'" + MONTO_LITERAL +"',"+ESTADO+")";
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    public boolean actualizar() {
        try {
            String consulta = "update BROKER.CON_CHEQUE set NRO_CHEQUE="+NRO_CHEQUE+", ID_REGIONAL="+ID_REGIONAL+",FECHA="+ "to_date('"+getFECHA()+"', 'DD/MM/YYYY HH:MI:SS')" +", NOMBRE='"+NOMBRE+"', MONTO="+MONTO+", MONTO_LITERAL='"+MONTO_LITERAL+"',ESTADO="+ESTADO+" where ID="+ID ;
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    public boolean anular(Double id) throws SQLException {
            String consulta = "update BROKER.CON_CHEQUE set ESTADO = 1 where ID ="+id;
            con.EjecutarSentencia(consulta);
            return true;
    }
    public boolean activar(Double id) throws SQLException {
            String consulta = "update BROKER.CON_CHEQUE set ESTADO = 0 where ID ="+id;
            con.EjecutarSentencia(consulta);
            return true;
    }

    public boolean EliminarXid() {
        try {
            String consulta = "delete from BROKER.CON_CHEQUE where ID= " + getID();
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public List<CON_CHEQUE> Todos() {
        try {
            String consulta = "select * from BROKER.CON_CHEQUE";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public List<CON_CHEQUE> TodosActivos() {
        try {
            String consulta = "select * from BROKER.CON_CHEQUE where ESTADO = 0";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public List<CON_CHEQUE> TodosAnulados() {
        try {
            String consulta = "select * from BROKER.CON_CHEQUE where ESTADO = 1";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public CON_CHEQUE Buscar() throws SQLException 
    {
        String consulta = "select * from BROKER.CON_CHEQUE where NRO_CHEQUE = "+getNRO_CHEQUE()+" and MONTO = "+getMONTO()+" and NOMBRE = '"+getNOMBRE()+"'";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs).get(0);
    }
    public CON_CHEQUE BuscarXid(double id) throws SQLException 
    {
        String consulta = "select * from BROKER.CON_CHEQUE where  ID="+id;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs).get(0);
    }
    
    public boolean chequeComprobanteAdd(double id_cuenta_comprobante) throws SQLException
    {
        String consulta = "update BROKER.CON_CHEQUE set ID_CUENTA_COMPROBANTE = "+id_cuenta_comprobante+" where ID = "+ID;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<CON_CHEQUE> Cargar(ResultSet rs) {
        try {
            List<CON_CHEQUE> lista = new ArrayList<CON_CHEQUE>();
            while (rs.next()) {
                CON_CHEQUE objeto = new CON_CHEQUE();
                objeto.setID(rs.getDouble("ID"));
                objeto.setNRO_CHEQUE(rs.getDouble("NRO_CHEQUE"));
                objeto.setID_REGIONAL(rs.getDouble("ID_REGIONAL"));
                objeto.setFECHA(rs.getDate("FECHA"));
                objeto.setNOMBRE(rs.getString("NOMBRE"));
                objeto.setMONTO(rs.getDouble("MONTO"));
                objeto.setESTADO(rs.getDouble("ESTADO"));
                objeto.setMONTO_LITERAL(rs.getString("MONTO_LITERAL"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public double getID() {
        return ID;
    }

    public void setID(double ID) {
        this.ID = ID;
    }

    public double getNRO_CHEQUE() {
        return NRO_CHEQUE;
    }

    public void setNRO_CHEQUE(double NRO_CHEQUE) {
        this.NRO_CHEQUE = NRO_CHEQUE;
    }

    public Double getID_REGIONAL() {
        return ID_REGIONAL;
    }

    public void setID_REGIONAL(Double ID_REGIONAL) {
        this.ID_REGIONAL = ID_REGIONAL;
    }

    public String getFECHA() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        return sdf.format(FECHA);
    }

    public void setFECHA(Date FECHA) {
        this.FECHA = FECHA;
    }

    public String getNOMBRE() {
        return NOMBRE;
    }

    public void setNOMBRE(String NOMBRE) {
        this.NOMBRE = NOMBRE;
    }

    public double getMONTO() {
        return MONTO;
    }

    public void setMONTO(double MONTO) {
        this.MONTO = MONTO;
    }

    public String getMONTO_LITERAL() {
        return MONTO_LITERAL;
    }

    public void setMONTO_LITERAL(String MONTO_LITERAL) {
        this.MONTO_LITERAL = MONTO_LITERAL;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }

    public Double getESTADO() {
        return ESTADO;
    }

    public void setESTADO(Double ESTADO) {
        this.ESTADO = ESTADO;
    }
    
    
}
